import OpenAI from 'openai'

// DeepSeek API 配置
const DEEPSEEK_API_KEY = import.meta.env.VITE_DEEPSEEK_API_KEY || 'your-api-key-here'
const DEEPSEEK_BASE_URL = 'https://api.deepseek.com'

// 电商领域词典和系统提示词
const SYSTEM_PROMPT = `你是一个专业的电商智能客服助手，专门处理用户关于订单、物流、退换货、优惠券等问题的咨询。

请遵循以下规则：
1. 回答要简洁明了，专业友好
2. 对于订单查询、物流查询类问题，优先返回结构化数据
3. 对于退换货流程，提供清晰的步骤指引
4. 如果问题超出你的能力范围，建议转接人工客服
5. 使用电商术语：SKU、预售、包邮、仅退款、退货退款等

电商业务知识：
- 订单状态：待付款、待发货、已发货、已完成、已取消
- 物流状态：已揽收、运输中、派送中、已签收
- 退货政策：7天无理由退货，商品需保持原包装
- 退款时效：1-3个工作日到账

请根据用户的问题，提供准确、有帮助的回答。`

// 初始化 OpenAI 客户端（用于 DeepSeek API）
let client = null

if (DEEPSEEK_API_KEY && DEEPSEEK_API_KEY !== 'your-api-key-here') {
  client = new OpenAI({
    apiKey: DEEPSEEK_API_KEY,
    baseURL: DEEPSEEK_BASE_URL,
    dangerouslyAllowBrowser: true,
  })
}

/**
 * 发送消息到 DeepSeek API（使用 OpenAI SDK）
 */
export const chatService = {
  async sendMessage(userMessage, history = [], stream = true) {
    // 如果没有配置 API Key，返回模拟响应
    if (!client) {
      return getMockResponse(userMessage)
    }

    try {
      // 构建消息历史
      const messages = [
        { role: 'system', content: SYSTEM_PROMPT },
        ...history.slice(-10).filter(msg => msg.from === 'user' || msg.from === 'model').map(msg => ({
          role: msg.from === 'user' ? 'user' : 'assistant',
          content: msg.content || ''
        })),
        { role: 'user', content: userMessage }
      ]

      // 调用 API
      const completion = await client.chat.completions.create({
        model: 'deepseek-chat',
        messages: messages,
        temperature: 0.7,
        max_tokens: 2000,
        stream: stream, // 是否开启流式返回
      })

      // 处理流式返回
      if (stream) {
        let fullContent = ''
        let chatId = ''
        
        for await (const chunk of completion) {
          const content = chunk.choices[0]?.delta?.content || ''
          chatId = chunk.id || chatId
          fullContent += content
        }

        // 检测是否需要人工转接
        const needHuman = fullContent.includes('转接人工') || 
                         fullContent.includes('人工客服') ||
                         history.filter(m => m.from === 'user').length > 5

        return {
          content: fullContent,
          needHuman,
          id: chatId
        }
      } else {
        // 非流式返回
        const aiResponse = completion.choices[0].message.content
        const needHuman = aiResponse.includes('转接人工') || 
                         aiResponse.includes('人工客服') ||
                         history.filter(m => m.from === 'user').length > 5

        return {
          content: aiResponse,
          needHuman,
          id: completion.id
        }
      }
    } catch (error) {
      console.error('API 调用失败:', error)
      
      // 如果 API 调用失败，返回模拟响应
      return getMockResponse(userMessage)
    }
  }
}

/**
 * 模拟响应（用于演示或 API 不可用时）
 */
function getMockResponse(userMessage) {
  const lowerMessage = userMessage.toLowerCase()
  
  if (lowerMessage.includes('物流') || lowerMessage.includes('快递') || lowerMessage.includes('发货')) {
    return {
      content: '正在为您查询物流信息...',
      type: 'logistics',
      needHuman: false
    }
  }
  
  if (lowerMessage.includes('退货') || lowerMessage.includes('退款')) {
    return {
      content: '我来帮您处理退货申请，请按照以下步骤操作：',
      type: 'returnSteps',
      needHuman: false
    }
  }
  
  if (lowerMessage.includes('订单') && (lowerMessage.includes('状态') || lowerMessage.includes('查询'))) {
    return {
      content: '正在为您查询订单信息...',
      type: 'orderInfo',
      needHuman: false
    }
  }
  
  if (lowerMessage.includes('优惠券') || lowerMessage.includes('券')) {
    return {
      content: '关于优惠券问题，我来帮您排查：\n\n1. 请确认优惠券是否在有效期内\n2. 检查商品是否满足使用条件（如满减金额）\n3. 确认是否已选择使用该优惠券\n\n如果以上都正常但仍未生效，请联系人工客服处理。',
      needHuman: false
    }
  }
  
  return {
    content: '我理解您的问题。作为智能客服，我会尽力帮助您解决。如果问题比较复杂，我可以为您转接人工客服。',
    needHuman: false
  }
}
